classdef RandomKLabelsets ...
        < MultiLabelAlgorithm ...
        & RandomSeedable ...
        & MultiLabelAlgorithm0able ...
        & ZAlgorithmable ...
        & ZSubLabelsetable ...
        & MultiLabelMetricable
    %RANDOMKLABELSETS Random K Labelsets (RAkEL)
    %   Detailed explanation goes here
    
    properties ( SetAccess = protected )
        nSubLabel = 3
    end
    
    methods % Set methods
        function [  ] = setNSubLabel( this, nSubLabel )
            %SETLABELSETSIZE Summary of this function goes here
            %   Detailed explanation goes here
            % RandomKLabelsets::
            
            this.nSubLabel = nSubLabel;
        end
    end
    
    methods
        function [ this ] = RandomKLabelsets(  )
            if nargin == 0
                this.setName('rakel');
            end
        end
    end
    
    methods
        function [  ] = build( this )
            %BUILD Summary of this function goes here
            %   Detailed explanation goes here
            % RandomKLabelsets::build
            
            disp('BatWarn: Please override this method in the inherited class.');
        end
        
        function [  ] = apply( this )
            %APPLY Summary of this function goes here
            %   Detailed explanation goes here
            % RandomKLabelsets::apply
            
            disp('BatWarn: Please override this method in the inherited class.');
        end
    end
    
end

